/*
 * alignContainerF.h
 *
 *  Created on: 2011-09-08
 *      Author: pawel
 */

#ifndef ALIGNCONTAINERF_H_
#define ALIGNCONTAINERF_H_
#include"alignContainerV.h"
//#include<iostream>
#include<iosfwd>
#include<list>
struct optAlgThreadParam;
class alignContainerF :public alignContainerV
{
private:
	__gnu_cxx::slist<int> scoreList;
	std::list<align*> alignList;
	//static const std::string outSeparator;
public:
	const __gnu_cxx::slist<int>& getScoreList()const;
	void pushAlign(align* &align);
	~alignContainerF();
	void calculateStats(size_t simulations,optAlgThreadParam thparam,size_t threadsNum);

	/*
	 * sort functions
	 */
	void sortByScore();
	void sortByIdentity();
	void sortBySimilarity();
	void sortByGaps();
	void sortByEValue();
	void sortByZScore();
	void sortByBits();

	friend std::ostream& operator<<(std::ostream&, alignContainerF&);
};

#endif /* ALIGNCONTAINERF_H_ */
